package com.prs.crm.flow;

import java.util.Collection;

import com.prs.crm.domain.flow.WorkFlowInstance;
import com.prs.crm.domain.flow.WorkFlowProcess;
import com.prs.crm.domain.flow.WorkFlowProcessNode;
import com.prs.crm.domain.flow.WorkFlowProcessNodeDetail;
import com.prs.crm.domain.hr.Person;

/**
 * 工作流执行
 * @author prs.chenzhi
 *
 */
public interface WorkFlowExecutor {

	/**
	 * 初始化一个流程 
	 * @param instance
	 * @param person 流程的发起人
	 * @return
	 * @throws Exception
	 */
	WorkFlowProcess initialize(WorkFlowInstance instance,Person person);
	/**
	 * 开始一个流程
	 * @param instance
	 * @person 流程发起人
	 * @return
	 */
	Collection<WorkFlowProcessNode> start(WorkFlowProcess process);
	
	
	/**
	 * 执行一个流程
	 */
	Collection<WorkFlowProcessNode> execute(WorkFlowProcessNode node,WorkFlowProcessNodeDetail detail,FlowActionListener<?> listener);
	

	
}
